package ren.xuedao.service;

import ren.xuedao.dto.ExposerDTO;
import ren.xuedao.dto.SeckillExecution;
import ren.xuedao.entity.Seckill;
import ren.xuedao.exception.RepeatKillException;
import ren.xuedao.exception.SeckillCloseException;
import ren.xuedao.exception.SeckillException;

import java.util.List;

/**
 * 业务接口：站在使用者的角度设计接口 ：
 * 1，方法定义粒度
 * 2，参数
 * 3，返回类型（return 类型/异常）
 * @author gx
 */
public interface SeckillService {

    List<Seckill> getSeckillList();

    Seckill getById(Long seckillId);

    /**
     * 秒杀开启时输入秒杀接口地址，否则输出系统时间和秒杀时间
     * @param seckillId
     */
    ExposerDTO exportSeckillUrl(Long seckillId);

    /**
     * 执行秒杀操作
     * @param seckillId
     * @param userPhone
     * @param md5
     */

    SeckillExecution executeSeckill(Long seckillId, Long userPhone, String md5) throws SeckillException, RepeatKillException,SeckillCloseException;
}
